package main

import "fmt"

//考察：数组操作、进位处理
//题目：给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一

func plusOne(digits []int) []int {
	// 从最后一位开始处理
	for i := len(digits) - 1; i >= 0; i-- {
		// 当前位加1
		digits[i]++
		// 处理进位：如果加1后等于10，需要进位
		if digits[i] == 10 {
			digits[i] = 0 // 当前位置0，继续向前一位进位
		} else {
			// 没有进位，直接返回结果
			return digits
		}
	}

	// 如果所有位都进位了（如9 → 10），需要在最前面加1
	return append([]int{1}, digits...)
}

func main() {
	fmt.Println(plusOne([]int{1, 2, 3}))    // [1 2 4]
	fmt.Println(plusOne([]int{4, 3, 2, 1})) // [4 3 2 2]
	fmt.Println(plusOne([]int{9}))          // [1 0]
}
